<?php

require_once 'IOperations.php';
require_once 'Connexion.class.php';
require_once '../modele/Utilisateur.class.php';

class AccesDonneesUtilisateur implements IOperations
{
    private $utilisateur;
    private $connexionBDD;
    private $initConnexion;
    
    public function __construct ($utilisateur)
    {
	$this->utilisateur = $utilisateur;
	try
	{
	    $this->initConnexion = new Connexion();
	    $this->connexionBDD = $this->initConnexion->connexionBDD();
	}
	catch (PDOException $erreur)
	{
	    echo 'Erreur, classe : ' . __CLASS__ .  ', méthode : ' . __METHOD__;
	}
    }
    
    public function creation()
    {
	$login = $this->utilisateur->getUsrLogin();
	$mdp = $this->utilisateur->getUsrMdp();
	$role = $this->utilisateur->getUsrRole();
	$annee = $this->utilisateur->getUsrAnnee();
	$prenom = $this->utilisateur->getUsrPrenom();
	$nom = $this->utilisateur->getUsrNom();
	$adresse = $this->utilisateur->getUsrAdresse();
		
	$this->connexionBDD->beginTransaction();
	
	$requetePreparee = $this->connexionBDD->prepare("INSERT INTO s_gestion_projet.v_infos_t_utilisateur_usr
			    (usr_login, usr_mot_de_passe, usr_role)
			    VALUES (?, ?, ?)");
	
	$requetePreparee->bindParam(1,$login);
	$requetePreparee->bindParam(2,$mdp);
	$requetePreparee->bindParam(3,$role);
				
	$execRequeteSQL = $requetePreparee->execute();
	
	if ($annee !== NULL)
	{
	    $requetePreparee = $this->connexionBDD->prepare("INSERT INTO s_gestion_projet.v_infos_t_age_age (usr_id,age_annee)
			    VALUES ((SELECT max(usr_id) FROM s_gestion_projet.v_infos_t_utilisateur_usr),?)");
				
	    $requetePreparee->bindParam(1,$annee);
	 
	    $execRequeteSQL = $requetePreparee->execute(); 
	}
	
	if ($prenom !== NULL && $nom !== NULL)
	{
	    $requetePreparee = $this->connexionBDD->prepare("INSERT INTO s_gestion_projet.v_infos_t_appelation_appl
	    (usr_id,appl_nom,appl_prenom) VALUES ((SELECT max(usr_id) FROM s_gestion_projet.v_infos_t_utilisateur_usr),?,?)");
	    
	    $requetePreparee->bindParam(1,$nom);
	    $requetePreparee->bindParam(2,$prenom);
	    
	    $execRequeteSQL = $requetePreparee->execute();
	}
	
	if ($adresse !== NULL)
	{
	    $requetePreparee = $this->connexionBDD->prepare("INSERT INTO s_gestion_projet.v_infos_t_habitation_hbt
	    (usr_id,hbt_adresse) VALUES ((SELECT max(usr_id) FROM s_gestion_projet.v_infos_t_utilisateur_usr),
	    ?)");
	
	    $requetePreparee->bindParam(1,$adresse);
	
	    $execRequeteSQL = $requetePreparee->execute();
	}
				
	$execRequeteSQL = $this->connexionBDD->commit();
	
	return $execRequeteSQL;
    }
    
    public function creationSimple ()
    {
	$login = $this->utilisateur->getUsrLogin();
	$mdp = $this->utilisateur->getUsrMdp();
	$role = $this->utilisateur->getUsrRole();
	
	$requetePreparee = $this->connexionBDD->prepare("INSERT INTO s_gestion_projet.v_infos_t_utilisateur_usr
			    (usr_login, usr_mot_de_passe, usr_role)
			    VALUES (?, ?, ?)");
	
	$requetePreparee->bindParam(1,$login);
	$requetePreparee->bindParam(2,$mdp);
	$requetePreparee->bindParam(3,$role);
	
	$execRequeteSQL = $requetePreparee->execute();
	
	return $execRequeteSQL;
    }
    
    public function selection()
    {
	$id = $this->utilisateur->getUsrID();
	
	$requetePreparee = $this->connexionBDD->prepare("SELECT * FROM s_gestion_projet.v_infos_t_utilisateur_usr
							WHERE usr_id = ?");
	
	$requetePreparee->bindParam(1,$id);
	
	$execRequeteSQL = $requetePreparee->execute();
	$resultatSQL = $requetePreparee->fetchAll(PDO::FETCH_ASSOC);
	$retourSelection = array();
	
	foreach ($resultatSQL as $ligne)
	{
	    $retourSelection[] = $ligne['usr_id'];
	    $retourSelection[] = $ligne['usr_login'];
	    $retourSelection[] = $ligne['usr_mot_de_passe'];
	    $retourSelection[] = $ligne['age_annee'];
	    $retourSelection[] = $ligne['appl_nom'];
	    $retourSelection[] = $ligne['appl_prenom'];
	    $retourSelection[] = $ligne['hbt_adresse'];
	}
	
	return $retourSelection;
    }
    
    public function selectionConnexion()
    {
	$login = $this->utilisateur->getUsrLogin();
	$mdp = $this->utilisateur->getUsrMdp();
	
	$requetePreparee = $this->connexionBDD->prepare("SELECT * FROM s_gestion_projet.v_infos_t_utilisateur_usr
							WHERE usr_login = ? AND usr_mot_de_passe = ?");
	
	$requetePreparee->bindParam(1,$login);
	$requetePreparee->bindParam(2,$mdp);
	
	$execRequeteSQL = $requetePreparee->execute();
	$resultatSQL = $requetePreparee->fetchAll(PDO::FETCH_ASSOC);
	
	if (empty($resultatSQL))
	{
	    $this->utilisateur->setUsrIdentification(FALSE);
	}
	else
	{
	    $this->utilisateur->setUsrIdentification(TRUE);
	}
	
	foreach ($resultatSQL as $ligne)
	{
	    $this->utilisateur->setUsrID($ligne['usr_id']);
	    $this->utilisateur->setUsrLogin($ligne['usr_login']);
	    $this->utilisateur->setUsrMdp($ligne['usr_mot_de_passe']);
	    $this->utilisateur->setUsrRole($ligne['usr_role']);
	    $this->utilisateur->setUsrAnnee($ligne['age_annee']);
	    $this->utilisateur->setUsrNom($ligne['appl_nom']);
	    $this->utilisateur->setUsrPrenom($ligne['appl_prenom']);
	    $this->utilisateur->setUsrAdresse($ligne['hbt_adresse']);
	}
	
	return $this->utilisateur;
    }
    
    //Sélectionne l'ensemble des utilisateurs
    public function selectionUtilisateurs ()
    {
	$id = $this->utilisateur->getUsrID();
	
	$requetePreparee = $this->connexionBDD->prepare("SELECT * FROM s_gestion_projet.v_infos_t_utilisateur_usr");
	
	$execRequeteSQL = $requetePreparee->execute();
	$resultatSQL = $requetePreparee->fetchAll(PDO::FETCH_ASSOC);
	$retourSelection = array(array());
	
	$i = 0;
	foreach ($resultatSQL as $ligne)
	{
	    $retourSelection[$i][] = $ligne['usr_id'];
	    $retourSelection[$i][] = $ligne['usr_login'];
	    $retourSelection[$i][] = $ligne['usr_mot_de_passe'];
	    $retourSelection[$i][] = $ligne['age_annee'];
	    $retourSelection[$i][] = $ligne['appl_nom'];
	    $retourSelection[$i][] = $ligne['appl_prenom'];
	    $retourSelection[$i][] = $ligne['hbt_adresse'];
	    $retourSelection[$i][] = $ligne['usr_role'];
	
	    $i++;
	}
	
	return $retourSelection;
    }
    
    public function suppression()
    {
	$id = $this->utilisateur->getUsrID(); 	
				
	$requetePreparee = $this->connexionBDD->prepare("DELETE FROM s_gestion_projet.v_infos_t_utilisateur_usr
	WHERE usr_id = ?");
	
	$requetePreparee->bindParam(1,$id);
	
	$execRequeteSQL = $requetePreparee->execute();
	
	return $execRequeteSQL;
    }
    
    public function miseAJour()
    {
	$login = $this->utilisateur->getUsrLogin();
	$mdp = $this->utilisateur->getUsrMdp();
	$role = $this->utilisateur->getUsrRole();
	$annee = $this->utilisateur->getUsrAnnee();
	$prenom = $this->utilisateur->getUsrPrenom();
	$nom = $this->utilisateur->getUsrNom();
	$adresse = $this->utilisateur->getUsrAdresse();
	$id = $this->utilisateur->getUsrID();
	
	$requetePreparee = $this->connexionBDD->prepare("UPDATE s_gestion_projet.v_infos_t_utilisateur_usr
				SET usr_login = ?,
				usr_mot_de_passe = ?,
				usr_role = ?,
				age_annee = ?,
				appl_nom = ?,
				appl_prenom = ?,
				hbt_adresse = ?		
				WHERE usr_id = ?");
	
	$requetePreparee->bindParam(1,$login);
	$requetePreparee->bindParam(2,$mdp);
	$requetePreparee->bindParam(3,$role);
	$requetePreparee->bindParam(4,$annee);
	$requetePreparee->bindParam(5,$prenom);
	$requetePreparee->bindParam(6,$nom);
	$requetePreparee->bindParam(7,$adresse);
	$requetePreparee->bindParam(8,$id);
				
	$execRequeteSQL = $requetePreparee->execute();
	
	return $execRequeteSQL;
    }
}
    
?>

